import DGDialogLayout from "../../../../components/DGDialogLayout/DGDialogLayout.tsx";
import DGTextView from "../../../../components/DGTextView.tsx";
import DGDrawerLayout from "../../../../components/DGDrawerLayout/DGDrawerLayout.tsx";
import {FC, useState} from "react";
import {useNavigate} from "react-router-dom";
import DGConnect from "../../../../sources/DGConnect.ts";

interface SelfFormDismissResultProps {
    state: boolean,
    switchView: (text: string) => void
}

const SelfFormUnfreezeResult: FC<SelfFormDismissResultProps> = ({state, switchView}) => {
    // 路由跳转
    const router = useNavigate();
    // 加载状态
    const [loading, setLoading] = useState(false);
    // 解除冻结状态 0-初始，1-失败，2-超时和非法失败，3-成功
    const [unfreeze, setUnfreeze] = useState(0);
    // 错误信息
    const [error, setError] = useState({state: false, text: ""});


    // 面板控制
    const handleClose = () => {
        // 关闭面板
        switchView("");
        // 设置开始解除冻结初始状态
        setUnfreeze(0);
        // 清空错误信息
        setError({state: false, text: ""});
        // 后退路由
        router(-1);
    }

    // 提交函数
    const handleSubmit = () => {
        // 开始加载
        setLoading(true);
        // 设置开始解除冻结初始状态
        setUnfreeze(0);
        // 请求解除冻结账户
        DGConnect.POST(JSON.stringify({type: "unfreeze", submit: 1}), result => {
            // 关闭加载
            setLoading(false);
            // 判断错误信息
            if (Number(result['data']['code']) !== 200) {
                // 设置失败状态
                setUnfreeze(1);
                // 超时和非法访问设置
                if (result['data']['code'] === 999) setUnfreeze(2);
                // 设置错误信息
                return setError({state: true, text: result['data']['message']});
            }
            // 解除冻结成功
            setUnfreeze(3);
        }, err => {
            // 关闭加载
            setLoading(false);
            // 设置失败状态
            setUnfreeze(1);
            // 设置错误信息
            setError({state: true, text: String(err['stack'])})
        });
    }


    // ContentView
    const ContentView = (<>
        {/* 解除冻结前提示 */}
        {unfreeze === 0 && <DGTextView Body Bold>
            点击解除按钮将会为您的账户进行解除冻结状态，您确定吗？
        </DGTextView>}

        {/* 解除冻结失败提示 */}
        {unfreeze === 1 && error.state && <DGTextView Body Bold color="error">
            发生了一些错误，请尝试重试，或及时联系我们。错误信息：{error.text}
        </DGTextView>}

        {/* 解除冻结失败超时或非法访问提示 */}
        {unfreeze === 2 && error.state && <DGTextView Body Bold color="error">
            发生了一些错误，请尝试重试，或及时联系我们。错误信息：{error.text}
        </DGTextView>}

        {/* 解除冻结成功提示 */}
        {unfreeze === 3 && <DGTextView Body Bold>
            已成功为您的账户解除冻结状态，现在您的账户已经恢复正常使用状态。
        </DGTextView>}
    </>);

    return (<>
        {/* DGDialogLayout 样式 */}
        <DGDialogLayout
            submit={(unfreeze !== 3 && unfreeze !== 2) && {name: "解除", click: () => handleSubmit()} || undefined}
            title="自助解除冻结" state={state} load={loading} close={() => handleClose()} PANEL AUTO>
            {ContentView}
        </DGDialogLayout>
        {/* DGDrawerLayout 样式 */}
        <DGDrawerLayout
            submit={(unfreeze !== 3 && unfreeze !== 2) && {name: "解除", click: () => handleSubmit()} || undefined}
            title="自助解除冻结" state={state} load={loading} close={() => handleClose()} flex="bottom" PANEL AUTO>
            {ContentView}
        </DGDrawerLayout>
    </>);
}
export default SelfFormUnfreezeResult;